// 格式化时间
export function formatTime (param) {
	const y = param.getFullYear()
	let m = param.getMonth() + 1
	let d = param.getDate()
	m = m < 10 ? `0${m}` : m
	d = d < 10 ? `0${d}` : d
	return `${y}-${m}-${d} `
}

/**
 * 以当前时间为基础，便捷获取时间（最近2天，最近1周，最近2周，最近1月，最近2月，最近半年，最近一年，本周，本月，本年）
 * @param { string } code
 * @returns { Object }
 */
export function getDate (code) {
	const date = new Date()
	const endTime = formatTime(date)
	const date1 = Date.parse(date)
	let start = ''
	let end = ''
	const oneDay = 1000 * 3600 * 24

	switch (code) {
		// 今天
		case 'today':
			start = new Date()
			break
		// 昨天
		case 'lastDay':
			start = date1 - oneDay * 1
			break
		// 最近2天
		case 'lastTwoDay':
			start = date1 - oneDay * 2
			break
		// 最近1周
		case 'lastOneWeek':
			start = date1 - oneDay * 7
			break
		// 最近2周
		case 'lastTwoWeek':
			start = date1 - oneDay * 14
			break
		// 最近1月
		case 'lastOneMonth':
			start = new Date()
			start.setMonth(start.getMonth() - 1)
			break
		// 最近2月
		case 'lastTwoMonth':
			start = new Date()
			start.setMonth(start.getMonth() - 2)
			break
		// 最近3月
		case 'lastThreeMonth':
			start = new Date()
			start.setMonth(start.getMonth() - 3)
			break
		// 最近半年
		case 'lastHalfYear':
			start = date1 - oneDay * 183
			break
		// 最近一年
		case 'lastOneYear':
			start = new Date()
			start.setYear(start.getFullYear() - 1)
			break
		// 本周
		case 'thisWeek':
			const a = 6 - date.getDay()
			start = new Date(date1 - oneDay * a).setHours(0, 0, 0, 0)
			end = new Date(date1 + oneDay * (1 + date.getDay())).setHours(24, 0, 0, 0)
			break
		// 本月
		case 'thisMonth':
			start = new Date()
			start.setHours(0, 0, 0, 0)
			start.setMonth(start.getMonth(), 1)
			end = new Date(start)
			end.setHours(0, 0, 0, 0)
			end.setMonth(start.getMonth() + 1, 1)
			break
		// 本年
		case 'thisYear':
			start = new Date()
			start.setHours(0, 0, 0, 0)
			start.setMonth(0, 1)
			start.setYear(start.getFullYear())
			end = new Date(start)
			end.setHours(0, 0, 0, 0)
			end.setMonth(start.getMonth(), 1)
			end.setYear(start.getFullYear() + 1)
			break
	}

	return {
		start_date: formatTime(new Date(start)),
		end_date: end ? formatTime(new Date(end)) : endTime
	}
}
